• Dummy: 虚拟对象,通常是一个占位符,只是为了满足代码的依赖关系而创建的。它通常不包含任何实际实现,仅仅是一个“空对象”,以便使程序能够编译和运行。因此,它不提供任何有用的测试信息

  • Fake: 伪造对象,通常是一种实现,但它与真实实现略有不同。例如,在测试数据库时,可能会使用内存中的数据库代替真正的数据库。这种伪造对象是为了在测试过程中获得更快的反馈和更好的控制

  • Stubs: 存根对象,通常是一种实现,它提供了预先定义的响应,以便测试代码能够在运行时提供一些预期的输出。通常,这些响应是硬编码在测试中的,以便测试代码能够正确执行。存根通常用于测试不重要的或与系统其他部分无关的代码

  • Spies: 间谍对象,是一种实现,它允许测试代码记录特定函数或方法被调用的情况。测试代码可以查询间谍对象以获得所记录的调用信息,并将其用于断言或其他测试目的。这些对象用于测试对其他系统组件的正确交互

  • Mocks: 模拟对象,是一种实现,它模仿了真实对象的行为,并提供了一些额外的功能,例如记录调用或模拟失败的情况。模拟对象允许测试代码模拟整个系统的行为,并测试系统的各个部分之间的交互,而不仅仅是与单个组件的交互

这些术语的区别在于它们如何与测试代码交互,并为测试代码提供什么样的信息。Dummy和Fake对象通常不提供任何有用的测试信息,而Stubs、Spies和Mocks对象则提供了不同程度的信息和控制,以便测试代码能够有效地测试系统的不同部分